import axios from 'axios';

// 环境变量配置
const ENV = process.env.NODE_ENV || 'development';

// API 配置
const API_CONFIG = {
    // API 基础 URL
    BASE_URL: process.env.REACT_APP_API_BASE_URL || 'http://localhost:3000',
    // API 超时时间（毫秒）
    TIMEOUT: 30000,
    // 是否启用流式响应
    STREAM_RESPONSE: process.env.REACT_APP_STREAM_RESPONSE === 'true',
    // 重试次数
    MAX_RETRIES: 3,
    // 重试延迟（毫秒）
    RETRY_DELAY: 1000
};

// 文件上传配置
const UPLOAD_CONFIG = {
    // 最大文件大小（字节）
    MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB
    // 允许的文件类型
    ALLOWED_FILE_TYPES: [
        'application/pdf',
        'application/msword',
        'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
        'application/vnd.ms-excel',
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
        'text/csv',
        'image/jpeg',
        'image/png'
    ],
    // 最大文件数量
    MAX_FILES: 10
};

// 消息配置
const MESSAGE_CONFIG = {
    // 消息最大长度
    MAX_LENGTH: 4000,
    // 消息历史记录最大数量
    MAX_HISTORY: 50,
    // 消息加载数量
    LOAD_COUNT: 20
};

// 主题配置
const THEME_CONFIG = {
    // 主题模式
    MODE: process.env.REACT_APP_THEME_MODE || 'light',
    // 主题色
    PRIMARY_COLOR: '#165DFF',
    // 背景色
    BACKGROUND_COLOR: '#FFFFFF',
    // 文字颜色
    TEXT_COLOR: '#1D2129'
};

/**
 * 检查配置是否有效
 * @returns {Promise<boolean>} 配置是否有效
 */
export const checkConfig = async () => {
    try {
        const response = await axios.get(`${API_CONFIG.BASE_URL}/config`);
        return response.data.valid;
    } catch (error) {
        console.error('配置检查失败:', error);
        return false;
    }
};

/**
 * 获取配置信息
 * @returns {Promise<Object>} 配置信息
 */
export const getConfig = async () => {
    try {
        const response = await axios.get(`${API_CONFIG.BASE_URL}/config`);
        return response.data;
    } catch (error) {
        console.error('获取配置失败:', error);
        throw error;
    }
};

/**
 * 更新配置信息
 * @param {Object} config - 新的配置信息
 * @returns {Promise<Object>} 更新后的配置信息
 */
export const updateConfig = async (config) => {
    try {
        const response = await axios.put(`${API_CONFIG.BASE_URL}/config`, config);
        return response.data;
    } catch (error) {
        console.error('更新配置失败:', error);
        throw error;
    }
};

/**
 * 获取当前环境
 * @returns {string} - 返回当前环境
 */
export const getEnv = () => ENV;

/**
 * 获取 API 配置
 * @returns {Object} - 返回 API 配置
 */
export const getApiConfig = () => API_CONFIG;

/**
 * 获取上传配置
 * @returns {Object} - 返回上传配置
 */
export const getUploadConfig = () => UPLOAD_CONFIG;

/**
 * 获取消息配置
 * @returns {Object} - 返回消息配置
 */
export const getMessageConfig = () => MESSAGE_CONFIG;

/**
 * 获取主题配置
 * @returns {Object} - 返回主题配置
 */
export const getThemeConfig = () => THEME_CONFIG;

// 导出所有配置
export default {
    ENV,
    API_CONFIG,
    UPLOAD_CONFIG,
    MESSAGE_CONFIG,
    THEME_CONFIG,
    checkConfig,
    getEnv,
    getApiConfig,
    getUploadConfig,
    getMessageConfig,
    getThemeConfig,
    getConfig,
    updateConfig
}; 